package process

import "fmt"

// 在线用户管理
// 服务端只有一个，定义为全局变量
var (
	userManager *UserManager
)

type UserManager struct {
	onlineUsers map[int]*UserProcess
}

func init() {
	userManager = &UserManager{
		onlineUsers: make(map[int]*UserProcess, 1024),
	}
}

func (this *UserManager) AssOnlineUser(userProcess *UserProcess) {
	this.onlineUsers[userProcess.UserId] = userProcess
}

func (this *UserManager) DelOnlineUser(userId int) {
	delete(this.onlineUsers, userId)
}

func (this *UserManager) GetAllOnlineUser() map[int]*UserProcess {
	return this.onlineUsers
}

func (this *UserManager) GetOnlineUserByUserId(userId int) (userProcess *UserProcess, err error) {
	userProcess, ok := this.onlineUsers[userId]
	if !ok {
		err = fmt.Errorf("用户%d 不存在", userId)
	}
	return
}
